<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="1200" height="470" onload="init(evt)" viewBox="0 0 1200 470" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Flame graph stack visualization. See https://github.com/brendangregg/FlameGraph for latest version, and http://www.brendangregg.com/flamegraphs.html for examples. -->
<!-- NOTES:  -->
<defs>
	<linearGradient id="background" y1="0" y2="1" x1="0" x2="0" >
		<stop stop-color="#eeeeee" offset="5%" />
		<stop stop-color="#eeeeb0" offset="95%" />
	</linearGradient>
</defs>
<style type="text/css">
	text { font-family:Verdana; font-size:12px; fill:rgb(0,0,0); }
	#search { opacity:0.1; cursor:pointer; }
	#search:hover, #search.show { opacity:1; }
	#subtitle { text-anchor:middle; font-color:rgb(160,160,160); }
	#title { text-anchor:middle; font-size:17px}
	#unzoom { cursor:pointer; }
	#frames > *:hover { stroke:black; stroke-width:0.5; cursor:pointer; }
	.hide { display:none; }
	.parent { opacity:0.5; }
</style>
<script type="text/ecmascript">
<![CDATA[
	"use strict";
	var details, searchbtn, unzoombtn, matchedtxt, svg, searching;
	function init(evt) {
		details = document.getElementById("details").firstChild;
		searchbtn = document.getElementById("search");
		unzoombtn = document.getElementById("unzoom");
		matchedtxt = document.getElementById("matched");
		svg = document.getElementsByTagName("svg")[0];
		searching = 0;
	}

	window.addEventListener("click", function(e) {
		var target = find_group(e.target);
		if (target) {
			if (target.nodeName == "a") {
				if (e.ctrlKey === false) return;
				e.preventDefault();
			}
			if (target.classList.contains("parent")) unzoom();
			zoom(target);
		}
		else if (e.target.id == "unzoom") unzoom();
		else if (e.target.id == "search") search_prompt();
	}, false)

	// mouse-over for info
	// show
	window.addEventListener("mouseover", function(e) {
		var target = find_group(e.target);
		if (target) details.nodeValue = "Function: " + g_to_text(target);
	}, false)

	// clear
	window.addEventListener("mouseout", function(e) {
		var target = find_group(e.target);
		if (target) details.nodeValue = ' ';
	}, false)

	// ctrl-F for search
	window.addEventListener("keydown",function (e) {
		if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {
			e.preventDefault();
			search_prompt();
		}
	}, false)

	// functions
	function find_child(node, selector) {
		var children = node.querySelectorAll(selector);
		if (children.length) return children[0];
		return;
	}
	function find_group(node) {
		var parent = node.parentElement;
		if (!parent) return;
		if (parent.id == "frames") return node;
		return find_group(parent);
	}
	function orig_save(e, attr, val) {
		if (e.attributes["_orig_" + attr] != undefined) return;
		if (e.attributes[attr] == undefined) return;
		if (val == undefined) val = e.attributes[attr].value;
		e.setAttribute("_orig_" + attr, val);
	}
	function orig_load(e, attr) {
		if (e.attributes["_orig_"+attr] == undefined) return;
		e.attributes[attr].value = e.attributes["_orig_" + attr].value;
		e.removeAttribute("_orig_"+attr);
	}
	function g_to_text(e) {
		var text = find_child(e, "title").firstChild.nodeValue;
		return (text)
	}
	function g_to_func(e) {
		var func = g_to_text(e);
		// if there's any manipulation we want to do to the function
		// name before it's searched, do it here before returning.
		return (func);
	}
	function update_text(e) {
		var r = find_child(e, "rect");
		var t = find_child(e, "text");
		var w = parseFloat(r.attributes.width.value) -3;
		var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,"");
		t.attributes.x.value = parseFloat(r.attributes.x.value) + 3;

		// Smaller than this size won't fit anything
		if (w < 2 * 12 * 0.59) {
			t.textContent = "";
			return;
		}

		t.textContent = txt;
		// Fit in full text width
		if (/^ *$/.test(txt) || t.getSubStringLength(0, txt.length) < w)
			return;

		for (var x = txt.length - 2; x > 0; x--) {
			if (t.getSubStringLength(0, x + 2) <= w) {
				t.textContent = txt.substring(0, x) + "..";
				return;
			}
		}
		t.textContent = "";
	}

	// zoom
	function zoom_reset(e) {
		if (e.attributes != undefined) {
			orig_load(e, "x");
			orig_load(e, "width");
		}
		if (e.childNodes == undefined) return;
		for (var i = 0, c = e.childNodes; i < c.length; i++) {
			zoom_reset(c[i]);
		}
	}
	function zoom_child(e, x, ratio) {
		if (e.attributes != undefined) {
			if (e.attributes.x != undefined) {
				orig_save(e, "x");
				e.attributes.x.value = (parseFloat(e.attributes.x.value) - x - 10) * ratio + 10;
				if (e.tagName == "text")
					e.attributes.x.value = find_child(e.parentNode, "rect[x]").attributes.x.value + 3;
			}
			if (e.attributes.width != undefined) {
				orig_save(e, "width");
				e.attributes.width.value = parseFloat(e.attributes.width.value) * ratio;
			}
		}

		if (e.childNodes == undefined) return;
		for (var i = 0, c = e.childNodes; i < c.length; i++) {
			zoom_child(c[i], x - 10, ratio);
		}
	}
	function zoom_parent(e) {
		if (e.attributes) {
			if (e.attributes.x != undefined) {
				orig_save(e, "x");
				e.attributes.x.value = 10;
			}
			if (e.attributes.width != undefined) {
				orig_save(e, "width");
				e.attributes.width.value = parseInt(svg.width.baseVal.value) - (10 * 2);
			}
		}
		if (e.childNodes == undefined) return;
		for (var i = 0, c = e.childNodes; i < c.length; i++) {
			zoom_parent(c[i]);
		}
	}
	function zoom(node) {
		var attr = find_child(node, "rect").attributes;
		var width = parseFloat(attr.width.value);
		var xmin = parseFloat(attr.x.value);
		var xmax = parseFloat(xmin + width);
		var ymin = parseFloat(attr.y.value);
		var ratio = (svg.width.baseVal.value - 2 * 10) / width;

		// XXX: Workaround for JavaScript float issues (fix me)
		var fudge = 0.0001;

		unzoombtn.classList.remove("hide");

		var el = document.getElementById("frames").children;
		for (var i = 0; i < el.length; i++) {
			var e = el[i];
			var a = find_child(e, "rect").attributes;
			var ex = parseFloat(a.x.value);
			var ew = parseFloat(a.width.value);
			var upstack;
			// Is it an ancestor
			if (0 == 0) {
				upstack = parseFloat(a.y.value) > ymin;
			} else {
				upstack = parseFloat(a.y.value) < ymin;
			}
			if (upstack) {
				// Direct ancestor
				if (ex <= xmin && (ex+ew+fudge) >= xmax) {
					e.classList.add("parent");
					zoom_parent(e);
					update_text(e);
				}
				// not in current path
				else
					e.classList.add("hide");
			}
			// Children maybe
			else {
				// no common path
				if (ex < xmin || ex + fudge >= xmax) {
					e.classList.add("hide");
				}
				else {
					zoom_child(e, xmin, ratio);
					update_text(e);
				}
			}
		}
	}
	function unzoom() {
		unzoombtn.classList.add("hide");
		var el = document.getElementById("frames").children;
		for(var i = 0; i < el.length; i++) {
			el[i].classList.remove("parent");
			el[i].classList.remove("hide");
			zoom_reset(el[i]);
			update_text(el[i]);
		}
	}

	// search
	function reset_search() {
		var el = document.querySelectorAll("#frames rect");
		for (var i = 0; i < el.length; i++) {
			orig_load(el[i], "fill")
		}
	}
	function search_prompt() {
		if (!searching) {
			var term = prompt("Enter a search term (regexp " +
			    "allowed, eg: ^ext4_)", "");
			if (term != null) {
				search(term)
			}
		} else {
			reset_search();
			searching = 0;
			searchbtn.classList.remove("show");
			searchbtn.firstChild.nodeValue = "Search"
			matchedtxt.classList.add("hide");
			matchedtxt.firstChild.nodeValue = ""
		}
	}
	function search(term) {
		var re = new RegExp(term);
		var el = document.getElementById("frames").children;
		var matches = new Object();
		var maxwidth = 0;
		for (var i = 0; i < el.length; i++) {
			var e = el[i];
			var func = g_to_func(e);
			var rect = find_child(e, "rect");
			if (func == null || rect == null)
				continue;

			// Save max width. Only works as we have a root frame
			var w = parseFloat(rect.attributes.width.value);
			if (w > maxwidth)
				maxwidth = w;

			if (func.match(re)) {
				// highlight
				var x = parseFloat(rect.attributes.x.value);
				orig_save(rect, "fill");
				rect.attributes.fill.value = "rgb(230,0,230)";

				// remember matches
				if (matches[x] == undefined) {
					matches[x] = w;
				} else {
					if (w > matches[x]) {
						// overwrite with parent
						matches[x] = w;
					}
				}
				searching = 1;
			}
		}
		if (!searching)
			return;

		searchbtn.classList.add("show");
		searchbtn.firstChild.nodeValue = "Reset Search";

		// calculate percent matched, excluding vertical overlap
		var count = 0;
		var lastx = -1;
		var lastw = 0;
		var keys = Array();
		for (k in matches) {
			if (matches.hasOwnProperty(k))
				keys.push(k);
		}
		// sort the matched frames by their x location
		// ascending, then width descending
		keys.sort(function(a, b){
			return a - b;
		});
		// Step through frames saving only the biggest bottom-up frames
		// thanks to the sort order. This relies on the tree property
		// where children are always smaller than their parents.
		var fudge = 0.0001;	// JavaScript floating point
		for (var k in keys) {
			var x = parseFloat(keys[k]);
			var w = matches[keys[k]];
			if (x >= lastx + lastw - fudge) {
				count += w;
				lastx = x;
				lastw = w;
			}
		}
		// display matched percent
		matchedtxt.classList.remove("hide");
		var pct = 100 * count / maxwidth;
		if (pct != 100) pct = pct.toFixed(1)
		matchedtxt.firstChild.nodeValue = "Matched: " + pct + "%";
	}
]]>
</script>
<rect x="0.0" y="0" width="1200.0" height="470.0" fill="url(#background)"  />
<text id="title" x="600.00" y="24" >Download CPU Profile</text>
<text id="details" x="10.00" y="453" > </text>
<text id="unzoom" x="10.00" y="24" class="hide">Reset Zoom</text>
<text id="search" x="1090.00" y="24" >Search</text>
<text id="matched" x="1090.00" y="453" > </text>
<g id="frames">
<g >
<title>MainThread`&lt;module&gt; (10 samples, 0.02%)</title><rect x="10.0" y="165" width="0.2" height="15.0" fill="rgb(231,156,42)" rx="2" ry="2" />
<text  x="13.02" y="175.5" ></text>
</g>
<g >
<title>MainThread`_real_close (51 samples, 0.10%)</title><rect x="16.6" y="133" width="1.2" height="15.0" fill="rgb(247,194,37)" rx="2" ry="2" />
<text  x="19.61" y="143.5" ></text>
</g>
<g >
<title>MainThread`_update_chunk_length (7,078 samples, 13.44%)</title><rect x="39.9" y="181" width="158.7" height="15.0" fill="rgb(214,117,12)" rx="2" ry="2" />
<text  x="42.94" y="191.5" >MainThread`_update_c..</text>
</g>
<g >
<title>MainThread`_create (27 samples, 0.05%)</title><rect x="15.0" y="133" width="0.6" height="15.0" fill="rgb(253,11,46)" rx="2" ry="2" />
<text  x="18.04" y="143.5" ></text>
</g>
<g >
<title>MainThread`_handle_fromlist (6 samples, 0.01%)</title><rect x="10.1" y="149" width="0.1" height="15.0" fill="rgb(225,218,2)" rx="2" ry="2" />
<text  x="13.11" y="159.5" ></text>
</g>
<g >
<title>MainThread`request (31,862 samples, 60.52%)</title><rect x="17.8" y="277" width="714.1" height="15.0" fill="rgb(215,88,10)" rx="2" ry="2" />
<text  x="20.76" y="287.5" >MainThread`request</text>
</g>
<g >
<title>MainThread`recv_into (7,078 samples, 13.44%)</title><rect x="39.9" y="149" width="158.7" height="15.0" fill="rgb(251,193,27)" rx="2" ry="2" />
<text  x="42.94" y="159.5" >MainThread`recv_into</text>
</g>
<g >
<title>MainThread`__init__ (9 samples, 0.02%)</title><rect x="10.4" y="309" width="0.2" height="15.0" fill="rgb(212,144,15)" rx="2" ry="2" />
<text  x="13.45" y="319.5" ></text>
</g>
<g >
<title>MainThread`read (13,117 samples, 24.91%)</title><rect x="435.0" y="117" width="294.0" height="15.0" fill="rgb(218,173,29)" rx="2" ry="2" />
<text  x="437.96" y="127.5" >MainThread`read</text>
</g>
<g >
<title>MainThread`_new_conn (2,478 samples, 4.71%)</title><rect x="198.8" y="165" width="55.5" height="15.0" fill="rgb(225,152,13)" rx="2" ry="2" />
<text  x="201.77" y="175.5" >MainT..</text>
</g>
<g >
<title>MainThread`create_connection (12 samples, 0.02%)</title><rect x="14.7" y="149" width="0.3" height="15.0" fill="rgb(223,111,19)" rx="2" ry="2" />
<text  x="17.71" y="159.5" ></text>
</g>
<g >
<title>MainThread`_make_request (85 samples, 0.16%)</title><rect x="14.7" y="213" width="1.9" height="15.0" fill="rgb(207,197,19)" rx="2" ry="2" />
<text  x="17.71" y="223.5" ></text>
</g>
<g >
<title>MainThread`loads (25 samples, 0.05%)</title><rect x="731.9" y="309" width="0.6" height="15.0" fill="rgb(211,134,50)" rx="2" ry="2" />
<text  x="734.89" y="319.5" ></text>
</g>
<g >
<title>MainThread`read (43 samples, 0.08%)</title><rect x="15.6" y="117" width="1.0" height="15.0" fill="rgb(222,115,27)" rx="2" ry="2" />
<text  x="18.65" y="127.5" ></text>
</g>
<g >
<title>MainThread`send (31,691 samples, 60.20%)</title><rect x="21.6" y="261" width="710.3" height="15.0" fill="rgb(218,225,48)" rx="2" ry="2" />
<text  x="24.59" y="271.5" >MainThread`send</text>
</g>
<g >
<title>MainThread`readinto (162 samples, 0.31%)</title><rect x="11.1" y="165" width="3.6" height="15.0" fill="rgb(237,30,11)" rx="2" ry="2" />
<text  x="14.08" y="175.5" ></text>
</g>
<g >
<title>MainThread`begin (43 samples, 0.08%)</title><rect x="15.6" y="181" width="1.0" height="15.0" fill="rgb(249,121,49)" rx="2" ry="2" />
<text  x="18.65" y="191.5" ></text>
</g>
<g >
<title>MainThread`exists (10 samples, 0.02%)</title><rect x="21.4" y="229" width="0.2" height="15.0" fill="rgb(220,177,52)" rx="2" ry="2" />
<text  x="24.36" y="239.5" ></text>
</g>
<g >
<title>MainThread`send (264 samples, 0.50%)</title><rect x="10.7" y="261" width="5.9" height="15.0" fill="rgb(213,52,15)" rx="2" ry="2" />
<text  x="13.69" y="271.5" ></text>
</g>
<g >
<title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="245" width="1.2" height="15.0" fill="rgb(246,149,28)" rx="2" ry="2" />
<text  x="19.61" y="255.5" ></text>
</g>
<g >
<title>MainThread`parse_headers (66 samples, 0.13%)</title><rect x="729.0" y="165" width="1.4" height="15.0" fill="rgb(224,42,32)" rx="2" ry="2" />
<text  x="731.96" y="175.5" ></text>
</g>
<g >
<title>MainThread`decode (25 samples, 0.05%)</title><rect x="731.9" y="293" width="0.6" height="15.0" fill="rgb(237,61,21)" rx="2" ry="2" />
<text  x="734.89" y="303.5" ></text>
</g>
<g >
<title>MainThread`_handle_chunk (605 samples, 1.15%)</title><rect x="26.4" y="181" width="13.5" height="15.0" fill="rgb(247,31,39)" rx="2" ry="2" />
<text  x="29.38" y="191.5" ></text>
</g>
<g >
<title>MainThread`request (65 samples, 0.12%)</title><rect x="730.4" y="197" width="1.5" height="15.0" fill="rgb(236,53,13)" rx="2" ry="2" />
<text  x="733.43" y="207.5" ></text>
</g>
<g >
<title>MainThread`get (31,913 samples, 60.62%)</title><rect x="16.6" y="309" width="715.3" height="15.0" fill="rgb(243,112,12)" rx="2" ry="2" />
<text  x="19.61" y="319.5" >MainThread`get</text>
</g>
<g >
<title>MainThread`read (7,078 samples, 13.44%)</title><rect x="39.9" y="133" width="158.7" height="15.0" fill="rgb(247,170,50)" rx="2" ry="2" />
<text  x="42.94" y="143.5" >MainThread`read</text>
</g>
<g >
<title>MainThread`_safe_read (8 samples, 0.02%)</title><rect x="10.9" y="165" width="0.2" height="15.0" fill="rgb(226,127,4)" rx="2" ry="2" />
<text  x="13.90" y="175.5" ></text>
</g>
<g >
<title>MainThread`_safe_read (605 samples, 1.15%)</title><rect x="26.4" y="165" width="13.5" height="15.0" fill="rgb(227,4,47)" rx="2" ry="2" />
<text  x="29.38" y="175.5" ></text>
</g>
<g >
<title>MainThread`save (20,413 samples, 38.77%)</title><rect x="732.5" y="325" width="457.5" height="15.0" fill="rgb(220,182,4)" rx="2" ry="2" />
<text  x="735.45" y="335.5" >MainThread`save</text>
</g>
<g >
<title>MainThread`recv_into (66 samples, 0.13%)</title><rect x="729.0" y="133" width="1.4" height="15.0" fill="rgb(234,20,26)" rx="2" ry="2" />
<text  x="731.96" y="143.5" ></text>
</g>
<g >
<title>MainThread`_read_status (13,117 samples, 24.91%)</title><rect x="435.0" y="165" width="294.0" height="15.0" fill="rgb(216,177,44)" rx="2" ry="2" />
<text  x="437.96" y="175.5" >MainThread`_read_status</text>
</g>
<g >
<title>MainThread`readinto (43 samples, 0.08%)</title><rect x="15.6" y="149" width="1.0" height="15.0" fill="rgb(240,91,22)" rx="2" ry="2" />
<text  x="18.65" y="159.5" ></text>
</g>
<g >
<title>MainThread`&lt;module&gt; (52,647 samples, 100.00%)</title><rect x="10.0" y="389" width="1180.0" height="15.0" fill="rgb(253,215,33)" rx="2" ry="2" />
<text  x="13.00" y="399.5" >MainThread`&lt;module&gt;</text>
</g>
<g >
<title>MainThread`_send_request (65 samples, 0.12%)</title><rect x="730.4" y="181" width="1.5" height="15.0" fill="rgb(241,184,40)" rx="2" ry="2" />
<text  x="733.43" y="191.5" ></text>
</g>
<g >
<title>MainThread`read_chunked (7,897 samples, 15.00%)</title><rect x="21.6" y="197" width="177.0" height="15.0" fill="rgb(232,133,22)" rx="2" ry="2" />
<text  x="24.59" y="207.5" >MainThread`read_chunked</text>
</g>
<g >
<title>MainThread`&lt;lambda&gt; (51 samples, 0.10%)</title><rect x="16.6" y="197" width="1.2" height="15.0" fill="rgb(233,141,12)" rx="2" ry="2" />
<text  x="19.61" y="207.5" ></text>
</g>
<g >
<title>MainThread`send (23,794 samples, 45.20%)</title><rect x="198.6" y="245" width="533.3" height="15.0" fill="rgb(213,171,48)" rx="2" ry="2" />
<text  x="201.59" y="255.5" >MainThread`send</text>
</g>
<g >
<title>MainThread`_parse (9 samples, 0.02%)</title><rect x="21.2" y="213" width="0.2" height="15.0" fill="rgb(210,216,19)" rx="2" ry="2" />
<text  x="24.16" y="223.5" ></text>
</g>
<g >
<title>all (52,647 samples, 100%)</title><rect x="10.0" y="421" width="1180.0" height="15.0" fill="rgb(233,8,13)" rx="2" ry="2" />
<text  x="13.00" y="431.5" ></text>
</g>
<g >
<title>MainThread`send (65 samples, 0.12%)</title><rect x="730.4" y="101" width="1.5" height="15.0" fill="rgb(224,168,52)" rx="2" ry="2" />
<text  x="733.43" y="111.5" ></text>
</g>
<g >
<title>MainThread`clear (51 samples, 0.10%)</title><rect x="16.6" y="229" width="1.2" height="15.0" fill="rgb(245,74,47)" rx="2" ry="2" />
<text  x="19.61" y="239.5" ></text>
</g>
<g >
<title>MainThread`send (65 samples, 0.12%)</title><rect x="730.4" y="133" width="1.5" height="15.0" fill="rgb(238,195,32)" rx="2" ry="2" />
<text  x="733.43" y="143.5" ></text>
</g>
<g >
<title>MainThread`generate (7,897 samples, 15.00%)</title><rect x="21.6" y="229" width="177.0" height="15.0" fill="rgb(210,35,42)" rx="2" ry="2" />
<text  x="24.59" y="239.5" >MainThread`generate</text>
</g>
<g >
<title>MainThread`&lt;module&gt; (6 samples, 0.01%)</title><rect x="10.1" y="37" width="0.1" height="15.0" fill="rgb(206,2,39)" rx="2" ry="2" />
<text  x="13.11" y="47.5" ></text>
</g>
<g >
<title>MainThread`readinto (66 samples, 0.13%)</title><rect x="729.0" y="149" width="1.4" height="15.0" fill="rgb(205,78,30)" rx="2" ry="2" />
<text  x="731.96" y="159.5" ></text>
</g>
<g >
<title>MainThread`request (266 samples, 0.51%)</title><rect x="10.6" y="293" width="6.0" height="15.0" fill="rgb(210,68,7)" rx="2" ry="2" />
<text  x="13.65" y="303.5" ></text>
</g>
<g >
<title>MainThread`_validate_conn (42 samples, 0.08%)</title><rect x="14.7" y="197" width="0.9" height="15.0" fill="rgb(228,137,11)" rx="2" ry="2" />
<text  x="17.71" y="207.5" ></text>
</g>
<g >
<title>MainThread`downloadBoard (266 samples, 0.51%)</title><rect x="10.6" y="325" width="6.0" height="15.0" fill="rgb(212,97,22)" rx="2" ry="2" />
<text  x="13.65" y="335.5" ></text>
</g>
<g >
<title>MainThread`_handle_chunk (8 samples, 0.02%)</title><rect x="10.9" y="181" width="0.2" height="15.0" fill="rgb(222,164,25)" rx="2" ry="2" />
<text  x="13.90" y="191.5" ></text>
</g>
<g >
<title>MainThread`recv_into (605 samples, 1.15%)</title><rect x="26.4" y="133" width="13.5" height="15.0" fill="rgb(239,111,50)" rx="2" ry="2" />
<text  x="29.38" y="143.5" ></text>
</g>
<g >
<title>MainThread`urlopen (85 samples, 0.16%)</title><rect x="14.7" y="229" width="1.9" height="15.0" fill="rgb(238,127,51)" rx="2" ry="2" />
<text  x="17.71" y="239.5" ></text>
</g>
<g >
<title>MainThread`getresponse (13,183 samples, 25.04%)</title><rect x="435.0" y="197" width="295.4" height="15.0" fill="rgb(236,24,14)" rx="2" ry="2" />
<text  x="437.96" y="207.5" >MainThread`getresponse</text>
</g>
<g >
<title>MainThread`content (7,897 samples, 15.00%)</title><rect x="21.6" y="245" width="177.0" height="15.0" fill="rgb(217,58,42)" rx="2" ry="2" />
<text  x="24.59" y="255.5" >MainThread`content</text>
</g>
<g >
<title>MainThread`readinto (605 samples, 1.15%)</title><rect x="26.4" y="149" width="13.5" height="15.0" fill="rgb(214,29,51)" rx="2" ry="2" />
<text  x="29.38" y="159.5" ></text>
</g>
<g >
<title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="261" width="1.2" height="15.0" fill="rgb(239,134,48)" rx="2" ry="2" />
<text  x="19.61" y="271.5" ></text>
</g>
<g >
<title>MainThread`ssl_wrap_socket (8,023 samples, 15.24%)</title><rect x="255.1" y="165" width="179.9" height="15.0" fill="rgb(212,111,4)" rx="2" ry="2" />
<text  x="258.14" y="175.5" >MainThread`ssl_wrap_soc..</text>
</g>
<g >
<title>MainThread`wrap_socket (5,675 samples, 10.78%)</title><rect x="307.8" y="149" width="127.2" height="15.0" fill="rgb(240,23,7)" rx="2" ry="2" />
<text  x="310.76" y="159.5" >MainThread`wrap..</text>
</g>
<g >
<title>MainThread`readinto (13,117 samples, 24.91%)</title><rect x="435.0" y="149" width="294.0" height="15.0" fill="rgb(210,192,29)" rx="2" ry="2" />
<text  x="437.96" y="159.5" >MainThread`readinto</text>
</g>
<g >
<title>MainThread`do_handshake (5,640 samples, 10.71%)</title><rect x="308.5" y="117" width="126.5" height="15.0" fill="rgb(225,152,48)" rx="2" ry="2" />
<text  x="311.55" y="127.5" >MainThread`do_h..</text>
</g>
<g >
<title>MainThread`_create (5,675 samples, 10.78%)</title><rect x="307.8" y="133" width="127.2" height="15.0" fill="rgb(243,138,52)" rx="2" ry="2" />
<text  x="310.76" y="143.5" >MainThread`_cre..</text>
</g>
<g >
<title>MainThread`_real_close (51 samples, 0.10%)</title><rect x="16.6" y="117" width="1.2" height="15.0" fill="rgb(209,75,9)" rx="2" ry="2" />
<text  x="19.61" y="127.5" ></text>
</g>
<g >
<title>MainThread`connect (42 samples, 0.08%)</title><rect x="14.7" y="181" width="0.9" height="15.0" fill="rgb(217,135,39)" rx="2" ry="2" />
<text  x="17.71" y="191.5" ></text>
</g>
<g >
<title>MainThread`read_chunked (179 samples, 0.34%)</title><rect x="10.7" y="197" width="4.0" height="15.0" fill="rgb(242,94,25)" rx="2" ry="2" />
<text  x="13.69" y="207.5" ></text>
</g>
<g >
<title>MainThread`decompress (213 samples, 0.40%)</title><rect x="21.6" y="165" width="4.8" height="15.0" fill="rgb(253,206,12)" rx="2" ry="2" />
<text  x="24.59" y="175.5" ></text>
</g>
<g >
<title>MainThread`_call_with_frames_removed (6 samples, 0.01%)</title><rect x="10.1" y="133" width="0.1" height="15.0" fill="rgb(229,219,27)" rx="2" ry="2" />
<text  x="13.11" y="143.5" ></text>
</g>
<g >
<title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="165" width="1.2" height="15.0" fill="rgb(210,213,50)" rx="2" ry="2" />
<text  x="19.61" y="175.5" ></text>
</g>
<g >
<title>MainThread`request (265 samples, 0.50%)</title><rect x="10.7" y="277" width="5.9" height="15.0" fill="rgb(244,50,47)" rx="2" ry="2" />
<text  x="13.67" y="287.5" ></text>
</g>
<g >
<title>MainThread`downLoadBoard (52,634 samples, 99.98%)</title><rect x="10.3" y="341" width="1179.7" height="15.0" fill="rgb(254,30,36)" rx="2" ry="2" />
<text  x="13.27" y="351.5" >MainThread`downLoadBoard</text>
</g>
<g >
<title>MainThread`read_token (9 samples, 0.02%)</title><rect x="21.2" y="181" width="0.2" height="15.0" fill="rgb(207,125,51)" rx="2" ry="2" />
<text  x="24.16" y="191.5" ></text>
</g>
<g >
<title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="149" width="1.2" height="15.0" fill="rgb(205,194,17)" rx="2" ry="2" />
<text  x="19.61" y="159.5" ></text>
</g>
<g >
<title>MainThread`_make_request (23,787 samples, 45.18%)</title><rect x="198.7" y="213" width="533.2" height="15.0" fill="rgb(246,8,2)" rx="2" ry="2" />
<text  x="201.74" y="223.5" >MainThread`_make_request</text>
</g>
<g >
<title>MainThread`exec_module (12 samples, 0.02%)</title><rect x="10.0" y="293" width="0.3" height="15.0" fill="rgb(230,145,24)" rx="2" ry="2" />
<text  x="13.00" y="303.5" ></text>
</g>
<g >
<title>MainThread`getaddrinfo (36 samples, 0.07%)</title><rect x="253.5" y="133" width="0.8" height="15.0" fill="rgb(225,111,47)" rx="2" ry="2" />
<text  x="256.50" y="143.5" ></text>
</g>
<g >
<title>MainThread`recv_into (162 samples, 0.31%)</title><rect x="11.1" y="149" width="3.6" height="15.0" fill="rgb(242,37,50)" rx="2" ry="2" />
<text  x="14.08" y="159.5" ></text>
</g>
<g >
<title>MainThread`readinto (7,078 samples, 13.44%)</title><rect x="39.9" y="165" width="158.7" height="15.0" fill="rgb(218,146,4)" rx="2" ry="2" />
<text  x="42.94" y="175.5" >MainThread`readinto</text>
</g>
<g >
<title>MainThread`recv_into (8 samples, 0.02%)</title><rect x="10.9" y="133" width="0.2" height="15.0" fill="rgb(250,175,43)" rx="2" ry="2" />
<text  x="13.90" y="143.5" ></text>
</g>
<g >
<title>MainThread`readinto (8 samples, 0.02%)</title><rect x="10.9" y="149" width="0.2" height="15.0" fill="rgb(252,26,33)" rx="2" ry="2" />
<text  x="13.90" y="159.5" ></text>
</g>
<g >
<title>MainThread`connect (10,538 samples, 20.02%)</title><rect x="198.8" y="181" width="236.2" height="15.0" fill="rgb(218,69,40)" rx="2" ry="2" />
<text  x="201.77" y="191.5" >MainThread`connect</text>
</g>
<g >
<title>MainThread`_call_with_frames_removed (10 samples, 0.02%)</title><rect x="10.0" y="181" width="0.2" height="15.0" fill="rgb(251,98,20)" rx="2" ry="2" />
<text  x="13.02" y="191.5" ></text>
</g>
<g >
<title>MainThread`generate (179 samples, 0.34%)</title><rect x="10.7" y="229" width="4.0" height="15.0" fill="rgb(218,180,47)" rx="2" ry="2" />
<text  x="13.69" y="239.5" ></text>
</g>
<g >
<title>MainThread`get_token (9 samples, 0.02%)</title><rect x="21.2" y="197" width="0.2" height="15.0" fill="rgb(207,78,19)" rx="2" ry="2" />
<text  x="24.16" y="207.5" ></text>
</g>
<g >
<title>MainThread`main (52,647 samples, 100.00%)</title><rect x="10.0" y="373" width="1180.0" height="15.0" fill="rgb(250,185,27)" rx="2" ry="2" />
<text  x="13.00" y="383.5" >MainThread`main</text>
</g>
<g >
<title>MainThread`exec_module (10 samples, 0.02%)</title><rect x="10.0" y="197" width="0.2" height="15.0" fill="rgb(228,51,53)" rx="2" ry="2" />
<text  x="13.02" y="207.5" ></text>
</g>
<g >
<title>MainThread`decompress (9 samples, 0.02%)</title><rect x="10.7" y="165" width="0.2" height="15.0" fill="rgb(206,75,51)" rx="2" ry="2" />
<text  x="13.69" y="175.5" ></text>
</g>
<g >
<title>MainThread`_validate_conn (10,538 samples, 20.02%)</title><rect x="198.8" y="197" width="236.2" height="15.0" fill="rgb(225,43,5)" rx="2" ry="2" />
<text  x="201.77" y="207.5" >MainThread`_validate_conn</text>
</g>
<g >
<title>MainThread`&lt;module&gt; (52,646 samples, 100.00%)</title><rect x="10.0" y="357" width="1180.0" height="15.0" fill="rgb(231,126,16)" rx="2" ry="2" />
<text  x="13.00" y="367.5" >MainThread`&lt;module&gt;</text>
</g>
<g >
<title>MainThread`_send_output (65 samples, 0.12%)</title><rect x="730.4" y="149" width="1.5" height="15.0" fill="rgb(208,155,7)" rx="2" ry="2" />
<text  x="733.43" y="159.5" ></text>
</g>
<g >
<title>MainThread`__exit__ (51 samples, 0.10%)</title><rect x="16.6" y="277" width="1.2" height="15.0" fill="rgb(213,77,43)" rx="2" ry="2" />
<text  x="19.61" y="287.5" ></text>
</g>
<g >
<title>MainThread`recv_into (13,117 samples, 24.91%)</title><rect x="435.0" y="133" width="294.0" height="15.0" fill="rgb(205,197,8)" rx="2" ry="2" />
<text  x="437.96" y="143.5" >MainThread`recv_into</text>
</g>
<g >
<title>MainThread`_read_status (43 samples, 0.08%)</title><rect x="15.6" y="165" width="1.0" height="15.0" fill="rgb(205,32,23)" rx="2" ry="2" />
<text  x="18.65" y="175.5" ></text>
</g>
<g >
<title>MainThread`_find_and_load_unlocked (6 samples, 0.01%)</title><rect x="10.1" y="101" width="0.1" height="15.0" fill="rgb(230,73,39)" rx="2" ry="2" />
<text  x="13.11" y="111.5" ></text>
</g>
<g >
<title>MainThread`prepare_request (171 samples, 0.32%)</title><rect x="17.8" y="261" width="3.8" height="15.0" fill="rgb(244,206,1)" rx="2" ry="2" />
<text  x="20.76" y="271.5" ></text>
</g>
<g >
<title>MainThread`_load_unlocked (12 samples, 0.02%)</title><rect x="10.0" y="309" width="0.3" height="15.0" fill="rgb(221,62,26)" rx="2" ry="2" />
<text  x="13.00" y="319.5" ></text>
</g>
<g >
<title>MainThread`_update_chunk_length (162 samples, 0.31%)</title><rect x="11.1" y="181" width="3.6" height="15.0" fill="rgb(216,90,54)" rx="2" ry="2" />
<text  x="14.08" y="191.5" ></text>
</g>
<g >
<title>MainThread`_new_conn (12 samples, 0.02%)</title><rect x="14.7" y="165" width="0.3" height="15.0" fill="rgb(241,84,26)" rx="2" ry="2" />
<text  x="17.71" y="175.5" ></text>
</g>
<g >
<title>MainThread`read (8 samples, 0.02%)</title><rect x="10.9" y="117" width="0.2" height="15.0" fill="rgb(253,119,30)" rx="2" ry="2" />
<text  x="13.90" y="127.5" ></text>
</g>
<g >
<title>MainThread`cert_verify (7 samples, 0.01%)</title><rect x="198.6" y="229" width="0.1" height="15.0" fill="rgb(207,158,41)" rx="2" ry="2" />
<text  x="201.59" y="239.5" ></text>
</g>
<g >
<title>MainThread`_call_with_frames_removed (6 samples, 0.01%)</title><rect x="10.1" y="53" width="0.1" height="15.0" fill="rgb(252,129,44)" rx="2" ry="2" />
<text  x="13.11" y="63.5" ></text>
</g>
<g >
<title>MainThread`begin (13,183 samples, 25.04%)</title><rect x="435.0" y="181" width="295.4" height="15.0" fill="rgb(235,62,9)" rx="2" ry="2" />
<text  x="437.96" y="191.5" >MainThread`begin</text>
</g>
<g >
<title>MainThread`endheaders (65 samples, 0.12%)</title><rect x="730.4" y="165" width="1.5" height="15.0" fill="rgb(210,16,19)" rx="2" ry="2" />
<text  x="733.43" y="175.5" ></text>
</g>
<g >
<title>MainThread`addPost (9 samples, 0.02%)</title><rect x="10.4" y="325" width="0.2" height="15.0" fill="rgb(246,121,34)" rx="2" ry="2" />
<text  x="13.45" y="335.5" ></text>
</g>
<g >
<title>MainThread`read (605 samples, 1.15%)</title><rect x="26.4" y="117" width="13.5" height="15.0" fill="rgb(234,95,27)" rx="2" ry="2" />
<text  x="29.38" y="127.5" ></text>
</g>
<g >
<title>MainThread`get (266 samples, 0.51%)</title><rect x="10.6" y="309" width="6.0" height="15.0" fill="rgb(236,103,37)" rx="2" ry="2" />
<text  x="13.65" y="319.5" ></text>
</g>
<g >
<title>MainThread`_load_unlocked (10 samples, 0.02%)</title><rect x="10.0" y="213" width="0.2" height="15.0" fill="rgb(241,114,1)" rx="2" ry="2" />
<text  x="13.02" y="223.5" ></text>
</g>
<g >
<title>MainThread`_load_unlocked (6 samples, 0.01%)</title><rect x="10.1" y="85" width="0.1" height="15.0" fill="rgb(215,141,27)" rx="2" ry="2" />
<text  x="13.11" y="95.5" ></text>
</g>
<g >
<title>MainThread`create_connection (2,478 samples, 4.71%)</title><rect x="198.8" y="149" width="55.5" height="15.0" fill="rgb(205,225,2)" rx="2" ry="2" />
<text  x="201.77" y="159.5" >MainT..</text>
</g>
<g >
<title>MainThread`get_netrc_auth (171 samples, 0.32%)</title><rect x="17.8" y="245" width="3.8" height="15.0" fill="rgb(214,190,0)" rx="2" ry="2" />
<text  x="20.76" y="255.5" ></text>
</g>
<g >
<title>MainThread`_decode (9 samples, 0.02%)</title><rect x="10.7" y="181" width="0.2" height="15.0" fill="rgb(220,78,3)" rx="2" ry="2" />
<text  x="13.69" y="191.5" ></text>
</g>
<g >
<title>MainThread`raw_decode (25 samples, 0.05%)</title><rect x="731.9" y="277" width="0.6" height="15.0" fill="rgb(231,9,23)" rx="2" ry="2" />
<text  x="734.89" y="287.5" ></text>
</g>
<g >
<title>MainThread`&lt;module&gt; (11 samples, 0.02%)</title><rect x="10.0" y="261" width="0.2" height="15.0" fill="rgb(212,222,22)" rx="2" ry="2" />
<text  x="13.00" y="271.5" ></text>
</g>
<g >
<title>MainThread`read (66 samples, 0.13%)</title><rect x="729.0" y="117" width="1.4" height="15.0" fill="rgb(253,201,15)" rx="2" ry="2" />
<text  x="731.96" y="127.5" ></text>
</g>
<g >
<title>MainThread`_find_and_load_unlocked (12 samples, 0.02%)</title><rect x="10.0" y="325" width="0.3" height="15.0" fill="rgb(232,105,42)" rx="2" ry="2" />
<text  x="13.00" y="335.5" ></text>
</g>
<g >
<title>MainThread`clear (51 samples, 0.10%)</title><rect x="16.6" y="213" width="1.2" height="15.0" fill="rgb(212,61,11)" rx="2" ry="2" />
<text  x="19.61" y="223.5" ></text>
</g>
<g >
<title>MainThread`content (179 samples, 0.34%)</title><rect x="10.7" y="245" width="4.0" height="15.0" fill="rgb(252,107,32)" rx="2" ry="2" />
<text  x="13.69" y="255.5" ></text>
</g>
<g >
<title>MainThread`exec_module (6 samples, 0.01%)</title><rect x="10.1" y="69" width="0.1" height="15.0" fill="rgb(223,162,12)" rx="2" ry="2" />
<text  x="13.11" y="79.5" ></text>
</g>
<g >
<title>MainThread`close (51 samples, 0.10%)</title><rect x="16.6" y="181" width="1.2" height="15.0" fill="rgb(223,197,7)" rx="2" ry="2" />
<text  x="19.61" y="191.5" ></text>
</g>
<g >
<title>MainThread`downloadThread (31,938 samples, 60.66%)</title><rect x="16.6" y="325" width="715.9" height="15.0" fill="rgb(254,152,1)" rx="2" ry="2" />
<text  x="19.61" y="335.5" >MainThread`downloadThread</text>
</g>
<g >
<title>MainThread`urlopen (23,787 samples, 45.18%)</title><rect x="198.7" y="229" width="533.2" height="15.0" fill="rgb(206,134,37)" rx="2" ry="2" />
<text  x="201.74" y="239.5" >MainThread`urlopen</text>
</g>
<g >
<title>MainThread`__init__ (161 samples, 0.31%)</title><rect x="17.8" y="229" width="3.6" height="15.0" fill="rgb(220,219,48)" rx="2" ry="2" />
<text  x="20.76" y="239.5" ></text>
</g>
<g >
<title>MainThread`wrap_socket (27 samples, 0.05%)</title><rect x="15.0" y="149" width="0.6" height="15.0" fill="rgb(235,125,54)" rx="2" ry="2" />
<text  x="18.04" y="159.5" ></text>
</g>
<g >
<title>MainThread`_find_and_load (12 samples, 0.02%)</title><rect x="10.0" y="341" width="0.3" height="15.0" fill="rgb(238,15,7)" rx="2" ry="2" />
<text  x="13.00" y="351.5" ></text>
</g>
<g >
<title>MainThread`ssl_wrap_socket (29 samples, 0.06%)</title><rect x="15.0" y="165" width="0.6" height="15.0" fill="rgb(205,103,4)" rx="2" ry="2" />
<text  x="18.00" y="175.5" ></text>
</g>
<g >
<title>MainThread`sendall (65 samples, 0.12%)</title><rect x="730.4" y="117" width="1.5" height="15.0" fill="rgb(215,190,3)" rx="2" ry="2" />
<text  x="733.43" y="127.5" ></text>
</g>
<g >
<title>MainThread`_run_code (52,647 samples, 100.00%)</title><rect x="10.0" y="405" width="1180.0" height="15.0" fill="rgb(237,30,45)" rx="2" ry="2" />
<text  x="13.00" y="415.5" >MainThread`_run_code</text>
</g>
<g >
<title>MainThread`read (162 samples, 0.31%)</title><rect x="11.1" y="133" width="3.6" height="15.0" fill="rgb(212,119,30)" rx="2" ry="2" />
<text  x="14.08" y="143.5" ></text>
</g>
<g >
<title>MainThread`recv_into (43 samples, 0.08%)</title><rect x="15.6" y="133" width="1.0" height="15.0" fill="rgb(249,117,51)" rx="2" ry="2" />
<text  x="18.65" y="143.5" ></text>
</g>
<g >
<title>MainThread`getresponse (43 samples, 0.08%)</title><rect x="15.6" y="197" width="1.0" height="15.0" fill="rgb(210,60,36)" rx="2" ry="2" />
<text  x="18.65" y="207.5" ></text>
</g>
<g >
<title>MainThread`_find_and_load_unlocked (11 samples, 0.02%)</title><rect x="10.0" y="229" width="0.2" height="15.0" fill="rgb(223,26,1)" rx="2" ry="2" />
<text  x="13.00" y="239.5" ></text>
</g>
<g >
<title>MainThread`_call_with_frames_removed (11 samples, 0.02%)</title><rect x="10.0" y="277" width="0.2" height="15.0" fill="rgb(246,220,14)" rx="2" ry="2" />
<text  x="13.00" y="287.5" ></text>
</g>
<g >
<title>MainThread`request (31,913 samples, 60.62%)</title><rect x="16.6" y="293" width="715.3" height="15.0" fill="rgb(220,147,8)" rx="2" ry="2" />
<text  x="19.61" y="303.5" >MainThread`request</text>
</g>
<g >
<title>MainThread`create_urllib3_context (37 samples, 0.07%)</title><rect x="254.3" y="165" width="0.8" height="15.0" fill="rgb(231,180,37)" rx="2" ry="2" />
<text  x="257.31" y="175.5" ></text>
</g>
<g >
<title>MainThread`stream (179 samples, 0.34%)</title><rect x="10.7" y="213" width="4.0" height="15.0" fill="rgb(205,8,23)" rx="2" ry="2" />
<text  x="13.69" y="223.5" ></text>
</g>
<g >
<title>MainThread`_decode (213 samples, 0.40%)</title><rect x="21.6" y="181" width="4.8" height="15.0" fill="rgb(236,28,13)" rx="2" ry="2" />
<text  x="24.59" y="191.5" ></text>
</g>
<g >
<title>MainThread`__new__ (37 samples, 0.07%)</title><rect x="254.3" y="149" width="0.8" height="15.0" fill="rgb(219,90,10)" rx="2" ry="2" />
<text  x="257.31" y="159.5" ></text>
</g>
<g >
<title>MainThread`_find_and_load (11 samples, 0.02%)</title><rect x="10.0" y="245" width="0.2" height="15.0" fill="rgb(222,127,7)" rx="2" ry="2" />
<text  x="13.00" y="255.5" ></text>
</g>
<g >
<title>MainThread`_find_and_load (6 samples, 0.01%)</title><rect x="10.1" y="117" width="0.1" height="15.0" fill="rgb(206,199,33)" rx="2" ry="2" />
<text  x="13.11" y="127.5" ></text>
</g>
<g >
<title>MainThread`do_handshake (27 samples, 0.05%)</title><rect x="15.0" y="117" width="0.6" height="15.0" fill="rgb(207,138,31)" rx="2" ry="2" />
<text  x="18.04" y="127.5" ></text>
</g>
<g >
<title>MainThread`stream (7,897 samples, 15.00%)</title><rect x="21.6" y="213" width="177.0" height="15.0" fill="rgb(208,55,53)" rx="2" ry="2" />
<text  x="24.59" y="223.5" >MainThread`stream</text>
</g>
<g >
<title>MainThread`send (85 samples, 0.16%)</title><rect x="14.7" y="245" width="1.9" height="15.0" fill="rgb(247,179,46)" rx="2" ry="2" />
<text  x="17.71" y="255.5" ></text>
</g>
</g>
</svg>
